/**
 * DAC0832
 * DAC0832是使用非常普遍的８位D/A转换器，由于其片内有输入数据寄存器，故可以直接与单片机接口。
 * DAC0832以电流形式输出，当需要转换为电压输出时，可外接运算放大器。
 * 属于该系列的芯片还有DAC0830、DAC0831，它们可以相互代换。
 * DAC0832主要特性：
 *      分辨率８位；
 *      电流建立时间１μS；
 *      数据输入可采用双缓冲、单缓冲或直通方式；
 *      输出电流线性度可在满量程下调节；
 *      逻辑电平输入与TTL电平兼容；
 *      单一电源供电（＋5V～＋15V）；
 *      低功耗，20mＷ。 
 * 
 * 引脚说明:
 * (1)CS:  片选信号，输入低电平有效。与 ILE 相配合，可对写信号WR1是否有效起到控制作用。
 * (2)ILE: 允许锁存信号，输入高电平有效。输入锁存器的信号LE1由ILE 、CS、WR1的逻辑组合产生。
 *         当ILE为高电平，CS 为低电平，WR1输入负脉冲时，LE1信号为正脉冲。
 *         LE1为高电平时，输入锁存器的状态随着数据输入线的状态变化，LE1 的负跳变将数据线上的信息锁入输入锁存器
 * (3)WR1: 写信号1，输入低电平有效。当WR1、CS、IIE均为有效时，可将数据写入输入锁存器。
 * (4)WR2: 写信号2，输入低电平有效。当其有效时，在传送控制信号XFER 的用下可将锁存在输入锁存器的8位数据送到DAC 存器。
 * (5)XFER: 数据传送控制信号，输入低电平有效。当XFER 为低电平，WR2输入负脉冲时，则在LE2产生正脉冲。
 *          LE2 为高电平时DAC 存器的输出和输入锁存器状态一致，LE2的负跳变将输入锁存器的内容锁入 DAC 存器。
 * (6)VREF: 基准电压输入端，可在-10V~+10V范围内调节。
 * (7)DI7~DI0: 数字量数据输入端
 * (8)IOUT1、IOUT2: 电流输出引脚。电流 IOU与 IOUT2 的和为常数，IOUT1、IouT2 随寄存器的内容线性变化。
 * (9)Rfb:    DAC0832片内部反馈电阻引脚。
 *  TX-1C中:
 *      ILE = WR2 = XFER = VREF = Vcc
 *      IOUT2 = 0
 *      Rfb: 接的跳线帽P5的第1引脚
 * 
 * １、单缓冲工作方式 
 *      此方式适用于只有一路模拟量输出，或有几路模拟量输出但并不要求同步的系统。
 * 双极性模拟输出电压:
 *      双极性输出时的分辨率比单极性输出时降低1/2，这是由于对双极性输出而言，最高位作为符号位，只有7位数值位。
 * 2、双缓冲工作方式 
 *      多路D/A转换输出，如果要求同步进行，就应该采用双缓冲器同步方式 。
 * 3、直通工作方式
 *      当DAC0832芯片的片选信号(CS)、写信号(WR1,WR2)、及传送控制信号(XFER)的引脚全部接地，允许输入锁存信号ILE引脚接＋5V时，
 *      DAC0832芯片就处于直通工作方式，数字量一旦输入，就直接进入DAC寄存器，进行D/A转换。
 */
#include <REGX52.H>

//片选端, 低电平有效
sbit DA_DAC0832_CS = P3^2;
//写信号1，输入低电平有效。
sbit DA_DAC0832_WR1 = P3^6;
//数据输入引脚 P0
sfr DA_DAC0832_DATA_PORT = 0x80;

/**
 * 初始化
 */
void DAC0832_Init() {
    DA_DAC0832_CS = 0;
}

/**
 * 写入数据
 */
void DAC0832_Write(unsigned char Data) {
    DA_DAC0832_DATA_PORT = Data;
    DA_DAC0832_WR1 = 0;
    DA_DAC0832_WR1 = 1;
}
